/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.epsi.blokus.entity.dialog;

import de.matthiasmann.twl.Button;
import de.matthiasmann.twl.ResizableFrame;
import de.matthiasmann.twl.TextArea;
import de.matthiasmann.twl.textarea.HTMLTextAreaModel;
import org.epsi.blokus.tools.I18n;
import org.epsi.blokus.tools.IConstantes;
import org.epsi.blokus.tools.PositionnementUtil;

/**
 * Fenêtre Popup d'erreur
 * @author julien.lafont
 */
public class ErrorDialog extends ResizableFrame implements IConstantes {

    private Button btn;
    private TextArea txtarea;

    /**
     * Affiche une fenêtre d'erreur
     * @param title Titre de la fenêtre
     * @param message Message à afficher
     */
    public ErrorDialog(String title, String message) {
        this.setTheme("dialogError");
        this.setTitle(title);
        this.setVisible(true);

        // Bouton validation
        btn = new Button(I18n.get("Fermer"));

        // Message
        HTMLTextAreaModel tam = new HTMLTextAreaModel();
        tam.setHtml(message);
        txtarea = new TextArea(tam);

        this.add(txtarea);
        this.add(btn);

    }

    /**
     * Placement des composants
     */
    public void updateRequested() {
        this.adjustSize();
        this.setPosition(300, 300);

        txtarea.setBorderSize(0,20,0,20);
        txtarea.setPosition(this.getX(), this.getY()+70);

        btn.adjustSize();
        btn.setPosition(PositionnementUtil.centrer(btn, this), this.getY()+200);
    }

    /**
     * Définir le callback appelé lors de l'action sur le bouton de la fenêtre
     * @param callback
     */
    public void setCloseCallback(Runnable callback) {
        btn.addCallback(callback);
        btn.addCallback(callbackFermer);
    }

    /**
     * Ferme et détruit la fenêtre
     */
    Runnable callbackFermer = new Runnable() {
        public void run() {
            setVisible(false);
            destroy();
        }
    };
    



    



}
